1. Field
The disclosed embodiments generally relate to a packet-processing technique in communications networks. More specifically, the disclosed embodiments relate to a hierarchical technique for separating packets.
2. Related Art
Packet classification engines are used in many high-performance network processing systems to separate or classify packets into several parallel processing elements. This classification is usually performed to exploit the inherent parallelism present in network flows and associated applications, and to match this inherent parallelism to the parallelism provided by the processing elements.
As network speeds have increased and with virtualized applications, more of the offload classification is being handled in hardware. However, in the overall packet-processing path, a packet classification engine can become a potential bottleneck. Consequently, the packet classification engine typically needs to scale to match the speed and the amount of additional processing that it has to perform.
In a conventional classification framework, even though there may be multiple contexts with pipelines within the packet classification engine, the bottleneck usually is the time it takes to determine the processing queue where a given packet is sent. Note that the use of multiple pipelines within the packet classification engine may not always solve this problem. In particular, the depth of classification can vary from packet to packet based on the application. Furthermore, because pipelines are often unequal, scaling issues can occur. In addition, with some of the emerging tunneling standards, pipelined packet classification engines often do not scale.
Hence, what is needed is a packet classification engine that facilitates the separation of packets without the problems described above.